package cn.sq.musicserver.plug.hander;

import cn.sq.musicserver.config.ResponseBean;
import cn.sq.musicserver.exception.PlugError;
import cn.sq.musicserver.music.entity.DownloadParam;
import cn.sq.musicserver.music.entity.SqMusic;
import cn.sq.musicserver.plug.PlugHander;
import cn.sq.musicserver.plug.entity.PlugLyicResult;
import cn.sq.musicserver.plug.entity.PlugSearchResult;
import cn.sq.musicserver.plug.model.jsososo.entity.LyircResult;
import cn.sq.musicserver.plug.model.jsososo.entity.LyricParam;
import cn.sq.musicserver.set.entity.SqSet;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * @author SQ
 * @since 2020-12-11
 * 音乐信息搜索（给歌曲，添加歌手，专辑等音乐信息）
 */
public abstract class MusicInfoSearc implements PlugHander {

    /**
     * @return 插件名称
     */
    @Override
    public abstract String PlugName();

    /**
     * @return 插件版本
     */
    @Override
    public abstract String Plugversion();

    /**
     * 歌曲信息搜索
     *
     * @param pagersize    每页多少条
     * @param pageindex    当前页
     * @param Keywords    歌曲名称
     * @param music        歌曲文件（用于音频检索）
     * @param set        插件设置
     * @return 歌曲信息
     */
   public  abstract PlugSearchResult musicInfoSearc(Integer pagersize, Integer pageindex, String Keywords, File music, List<SqSet> set, Map<String,String> data) throws PlugError;

    /**
     * 下载音乐
     * @param downloadParam
     * @return
     * @throws Exception
     */
   public  abstract SqMusic musicDownload(DownloadParam downloadParam) throws PlugError;

    /**
     *
     * @param lyricParam
     * @return
     * @throws Exception
     */
    public  abstract PlugLyicResult MusiclyricDownload(LyricParam lyricParam) throws PlugError;

}
